unique

您所在的位置:网站首页 openssl x509 unique

unique

#unique| 来源: 网络整理| 查看: 265

正如另一个问题所建议的那样,我使用一些using语句并unique_ptr使用OpenSSL 。没有它,代码将变得非常丑陋,我不是goto语句的忠实拥护者。

到目前为止,我已尽可能地更改了代码。这是我使用的示例:

using BIO_ptr = std::unique_ptr; using X509_ptr = std::unique_ptr; using EVP_PKEY_ptr = std::unique_ptr; using PKCS7_ptr = std::unique_ptr; ... BIO_ptr tbio(BIO_new_file(some_filename, "r"), ::BIO_free);

现在我需要a STACK_OF(X509),我不知道,是否也可以使用unique_ptr。我正在寻找与下面类似的东西,但这不起作用。

using STACK_OF_X509_ptr = std::unique_ptr;

我也尝试过Functor:

struct StackX509Deleter { void operator()(STACK_OF(X509) *ptr) { sk_X509_free(ptr); } }; using STACK_OF_X509_ptr = std::unique_ptr; STACK_OF_X509_ptr chain(loadIntermediate(cert.string()));

编译器接受这一点,然后应用程序运行。只是一个问题:在unique_ptrs上面显示的另一个问题中,我总是指定了第二个参数,所以我敢打赌我缺少了一些东西:

STACK_OF_X509_ptr chain(loadIntermediate(cert.string()), ??????);

如何使用C ++ unique_ptr和OpenSSL STACK_OF(X509)*?

1> Christian Rö..:

我定义了一个常规函数:

void stackOfX509Deleter(STACK_OF(X509) *ptr) { sk_X509_free(ptr); }

然后在代码中使用它:

using STACK_OF_X509_ptr = std::unique_ptr; STACK_OF_X509_ptr chain(loadIntermediate(cert.string()), stackOfX509Deleter);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3